package com.ccys.db.vo.app.splashscreen;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @program: WhiteCoat
 * @description: GetProfile返回数据对象
 * @author: ZhangJingCan
 * @create: 2024-01-16 14:56
 **/

@Data
public class GetProfileVo {

    /**
     * todo:和传入的token不一致？
     */
    @JsonProperty("access_token")
    private String accessToken;

    /**
     * 用户id
     */
    @JsonProperty("member_id")
    private String memberId;

    /**
     * 用户表code
     */
    private String code;

    @JsonProperty("first_name")
    private String firstName;

    @JsonProperty("last_name")
    private String lastName;
    private String email;
    @JsonProperty("nric_fin")
    private String nricFin;
    private String phone;
    @JsonProperty("home_address")
    private String homeAddress;
    @JsonProperty("office_address")
    private String officeAddress;

    /**
     * 0 女 1 男 -1 未知
     * 男-Male，女-Female，未知-Not Specified
     */
    private String gender;

    /**
     * 0 女 1 男 -1 未知
     */
    @JsonProperty("gender_db")
    private Integer genderDb;

    /**
     * 生日
     */
    @JsonProperty("date_of_birth")
    private Date dateOfBirth;

    private Integer age;

    /**
     * 注册日期
     */
    @JsonProperty("reg_date")
    private Date regDate;

    /**
     * 回购次数
     */
    @JsonProperty("rebuy_count")
    private Integer rebuyCount;

    /**
     * 国家ID
     */
    @JsonProperty("country_of_residence")
    private String countryOfResidence;

    /**
     * current_language
     */
    @JsonProperty("language_code")
    private String languageCode;

    /**
     * 取singpass_uuid
     */
    @JsonProperty("singpass_uuid")
    private String singpassUuid;

    private String nationality;

    /**
     * 手机号国家ID
     * 取：country_id
     */
    @JsonProperty("phone_country_id")
    private String phoneCountryId;

    /**
     * 紧急联系电话国家ID
     * 取emergency_country_id
     */
    @JsonProperty("emergency_phone_country_id")
    private String emergencyPhoneCountryId;

    /**
     * 个人资料照片
     * 取：image
     */
    @JsonProperty("profile_photo")
    private String profilePhoto;

    /**
     * 身份证正面照片
     * 取：front_identification_card
     */
    @JsonProperty("front_identification_card_photo")
    private String frontIdentificationCardPhoto;

    /**
     * 身份证背面照片
     * 取：back_identification_card
     */
    @JsonProperty("back_identification_card_photo")
    private String backIdentificationCardPhoto;

    /**
     * 护照照片
     * 取：passport
     */
    @JsonProperty("passport_photo")
    private String passportPhoto;

    /**
     * 驾照正面照片
     * 取：front_driving_license
     */
    @JsonProperty("front_of_driving_license_photo")
    private String frontOfDrivingLicensePhoto;

    /**
     * 驾照背面照片
     * 取：back_driving_license
     */
    @JsonProperty("back_of_driving_license_photo")
    private String backOfDrivingLicensePhoto;

    /**
     * 1:NRIC_FIN 2:Passport 3:Birth_certificate 4:Driving_license 5:Child_photo
     */
    @JsonProperty("type_id")
    private String typeId;

    /**
     * 紧急联系人名字
     * 取：emergency_first_name
     */
    @JsonProperty("emergency_first_name")
    private String emergencyFirstName;

    /**
     * 紧急联系人姓
     * 取：emergency_last_name
     */
    @JsonProperty("emergency_last_name")
    private String emergencyLastName;

    /**
     * 紧急联系人电话
     * 取：emergencyPhone
     */
    @JsonProperty("emergency_phone")
    private String emergencyPhone;

    /**
     * 紧急联系人关系
     * 取：emergency_relationship
     */
    @JsonProperty("emergency_relationship")
    private String emergencyRelationship;

    /**
     * 紧急联系人关系ID
     * 取：mem_emergency_relationship_id
     */
    @JsonProperty("emergency_relationship_id")
    private String emergencyRelationshipId;

    /**
     * 没用 - 设置默认值为false
     * 对方接口返回false
     */
    @JsonProperty("request_update_contact_info")
    private Boolean requestUpdateContactInfo = false;

    /**
     * 申请激活账户?
     * 没用，设置默认值为false
     */
    @JsonProperty("request_activate_account")
    private Boolean requestActivateAccount = false;

    /**
     * 是都大于等于21岁
     */
    @JsonProperty("for_child_that_turned_21")
    private Boolean forChildThatTurned21;

    /**
     * member
     */
    private Integer g6pd;

    /**
     * 怀孕
     * member
     */
    private Boolean pregnant;

    /**
     * 过敏症状
     */
    private List<AllergiesMakeVo> allergies;

    /**
     * 药物反应
     */
    @JsonProperty("medication_reactions")
    private List<MedicationReactionsMakeVo> medicationReactions;

    /**
     * 个人咨询费 - 对方返回25.0
     * 当前时段最高问诊费用 从tbl_pricing_timing表中查询
     */
    @JsonProperty("individual_consult_fee")
    private BigDecimal individualConsultFee;

    /**
     * 企业 - 已经没有在用了,可能要保留结构 返回null
     */
    private String corporate;

    /**
     * 订阅 -
     * 查询subscription类型的tbl_plan_benefit以及对应的member
     * {id,name,expiry_date(到期时间),consult_left(剩余可以consult的费用,用总设置的费用减去已经用过的费用计算),pay_for_consult_fee:false,pay_for_medication_fee:true,descrption,subscription_member_id}
     */
    private SubscriptionMakeVo subscription;

    /**
     * todo:提醒 - 对象形式返回 - 内部内容公共token和自己的token返回的都一样，两个字段为0，两个字段为""空字符串
     */
    private ReminderMakeVo reminder;

    /**
     * 咨询地址
     * member内能找到值
     */
    @JsonProperty("consult_address")
    private ConsultAddressMakeVo consultAddress;

    /**
     * nric
     * member表
     */
    @JsonProperty("pending_nric")
    private String pendingNric;

    /**
     * 是否已激活 PIN 码//todo
     */
    @JsonProperty("is_activated_pincode")
    private Boolean isActivatedPincode;

    /**
     * 是否可以使用think well
     * member有个：access_thinkwell 字段是integer类型
     * todo:有值就为true?
     */
    @JsonProperty("is_access_thinkwell")
    private Boolean isAccessThinkwell;

    /**
     * 登录回话是否过期 todo:
     */
    @JsonProperty("login_session_expired")
    private Boolean loginSessionExpired;

    /**
     * 是否保持登录状态
     * member表字段：mem_stay_logged_in
     */
    @JsonProperty("stay_logged_in")
    private Boolean stayLoggedIn;

    /**
     * 是否为首次登录
     * todo:去哪找？
     */
    @JsonProperty("mem_first_login")
    private Boolean memFirstLogin;

    /**
     * todo:是否验证？
     */
    @JsonProperty("is_verify_consent_eatwell")
    private Boolean isVerifyConsentEatwell;

}
